package com.mindframe.pruebasmapas;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class SavePointActivity extends Activity {

	private EditText txtLongitud, txtLatitud, txtNombre, txtDescr;
	private Button btnGuardar, btnEditar, btnEliminar;
	BaseDatos bdd = new BaseDatos(this, "bdPuntos", null, 1);
	Punto punto;
	boolean borrado = false;
	
	
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.edit_point);
		
		txtLatitud = (EditText) findViewById(R.id.txtLatitud);
		txtLongitud = (EditText) findViewById(R.id.txtLongitud);
		txtNombre = (EditText) findViewById(R.id.txtNombre);
		txtDescr = (EditText) findViewById(R.id.txtDescr);
		btnGuardar = (Button) findViewById(R.id.btnGuardar);
		btnEditar = (Button) findViewById(R.id.btnEditar);
		btnEliminar = (Button) findViewById(R.id.btnEliminar);

		// recogemos los valores del intent:
		Bundle bundle = getIntent().getExtras();

		String latitud = bundle.getString("latitud");
		String longitud = bundle.getString("longitud");
		String metodo = bundle.getString("metodo");
		String id_punto = bundle.getString("id_punto");

		if (metodo.compareToIgnoreCase("guardar") == 0) {
			txtLatitud.setEnabled(false);
			txtLongitud.setEnabled(false);
			txtLatitud.setText(latitud);
			txtLongitud.setText(longitud);
			btnEditar.setVisibility(View.INVISIBLE);
			btnEliminar.setVisibility(View.INVISIBLE);

		} else if (metodo.compareToIgnoreCase("editar") == 0) {
			btnGuardar.setVisibility(View.INVISIBLE);

			punto = bdd.getPuntoById(id_punto);
			txtLatitud.setEnabled(false);
			txtLongitud.setEnabled(false);
			txtLatitud.setText(punto.getLatitud());
			txtLongitud.setText(punto.getLongitud());
			txtNombre.setText(punto.getNombre());
			txtDescr.setText(punto.getDescripcion());

		}

		btnGuardar.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				Punto punto = new Punto(txtLatitud.getText().toString(),txtLongitud.getText().toString(), txtNombre.getText().toString(), txtDescr.getText().toString());

				// Controlar que el nombre no esté vacío.
				if (punto.getNombre() != null&& punto.getNombre().compareToIgnoreCase("") != 0) {
					// Controlar si existe en la base de datos:
					if (!bdd.existePunto(punto)) {
						bdd.savePunto(punto);

						Toast.makeText(getApplicationContext(), "Se ha añadido el punto " + punto.getNombre() + " correctamente.", Toast.LENGTH_LONG).show();
						finish();

					} else {
						crearDialogoAlerta("El punto ya existe en la base de datos");
					}
				} else {
					crearDialogoAlerta("El campo nombre es obligatorio");
				}

			}
		});

		btnEliminar.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				
				eliminarPunto(punto.get_id());
				
				
			}
		});
		
		btnEditar.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				bdd.editPunto(punto.get_id(), txtNombre.getText().toString(), txtDescr.getText().toString());
				
				Toast.makeText(getApplicationContext(), "El punto se ha modificado correctamente", Toast.LENGTH_LONG).show();
				
			}
		});
		
		

	}

	private void crearDialogoAlerta(String mensaje) {
		AlertDialog alertDialog = new AlertDialog.Builder(this).create();
		alertDialog.setTitle("Aviso");
		alertDialog.setMessage(mensaje);
		alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
			public void onClick(DialogInterface dialog, int which) {
				// here you can add functions
			}
		});
		alertDialog.show();
	}
	
	private void eliminarPunto(final String _id){

		AlertDialog.Builder adb = new AlertDialog.Builder(this);
		
		adb.setTitle("Eliminar");
		adb.setMessage("¿Desea eliminar el punto?");
		
		adb.setPositiveButton("Aceptar", new OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				Log.d("Dialogo: ", "aceptar");
				bdd.deletePunto(_id);
				Toast.makeText(getApplicationContext(), "Punto Eliminado", Toast.LENGTH_LONG).show();
				finish();

			}
		});
		
		adb.setNegativeButton("Cancelar", new OnClickListener() {
			
			public void onClick(DialogInterface dialog, int which) {
				Log.d("Dialogo: ", "cancelar");
				
			}
		});
		
		adb.show();
	}

}
